home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
eulisp
/
mpfeel.lha
/
MPFeel
/
Modules
/
loopsII.em
< prev
next >
Wrap
Lisp/Scheme
|
1992-10-06
|
948b
|
45 lines
(defmodule loopsII
(lists macros0 extras0 others list-operators ccc)
()
(defun map-while (ff pf)
(if (pf)
(progn (ff)
(map-while ff pf))
nil))
(defmacro while (pred . forms)
`(let/cc @continue-cont@
(let/cc @break-cont@
(map-while (lambda () (progn ,@forms)) (lambda () ,pred)))))
;; (defmacro for (init test iter . body)
;; `(progn
;; ,init
;; (while ,test
;; ,@body
;; ,iter)))
(defmacro ++ (form . vals)
(cond ((atom form)
`(setq ,form (+ ,form 1)))
((eq (car form) 'dynamic)
`(dynamic-setq ,(cadr form) (+ ,form 1)))
(t
`((setter ,(car form)) ,(cadr form) (+ ,form 1)))))
(defmacro -- (form)
(cond ((atom form)
`(setq ,form (- ,form 1)))
((eq (car form) 'dynamic)
`(dynamic-setq ,(cadr form) (- ,form 1)))
(t
`((setter ,(car form)) ,(cadr form) (- ,form 1)))))
(export map-while while ++ --)
)